package com.tensquare.base.controller;

import dto.ResultDTO;
import dto.StatusCode;
import oracle.jrockit.jfr.jdkevents.ThrowableTracer;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * Controller的公共异常处理类
 */
//@ControllerAdvice//开启了对Controller增强的功能，使用当前类增强（AOP）
//@ResponseBody
//组合注解，相当于@ControllerAdvice+@ResponseBody
@RestControllerAdvice
public class BaseExceptionHandler {

    /**
     * 异常处理方法
     */
    @ExceptionHandler//处理异常的Handler, 只要有异常，则会自动调用该方法处理
    // @ExceptionHandler(Exception.class)//可以指定抓取具体异常类
    // ResponseBody
    public ResultDTO errorHandler(Throwable e) {
        // 记录日志（发邮件，发短信）
        System.out.println("模拟发邮件记录日志：发生了异常");
        e.printStackTrace();
        return new ResultDTO(false, StatusCode.ERROR, e.getMessage());
    }
}
